#!/bin/bash
# 切换到脚本所在目录
cd "$(dirname "$0")"
# chmod +x build-push-images.sh
# 定义变量
VERSION="v30.0.2"
REGISTRY="registry.cn-hangzhou.aliyuncs.com"
NAMESPACE="hello-cloud"
USERNAME="百映zzz"
PASSWORD="zxcZXC123"

# 定义项目根目录和脚本目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "脚本位置: ${SCRIPT_DIR}"

# 要构建的服务列表 - 使用k8s/hello目录下的模块
SERVICES=(
  # "gateway"
  # "auth"
  # "modules/system"
  # "modules/file"
  "modules/connect"
  # "modules/data"
  # "modules/device"
  # "modules/product"
)

# 登录阿里云镜像仓库
echo "登录阿里云镜像仓库..."
docker login --username=${USERNAME} ${REGISTRY} --password=${PASSWORD}

if [ $? -ne 0 ]; then
  echo "登录失败，请检查凭据"
  exit 1
fi

# 当前工作目录
CURRENT_DIR=$(pwd)

# 遍历服务列表构建和推送镜像
for SERVICE in "${SERVICES[@]}"; do
  echo "==========================================="
  
  # 获取服务名称（移除路径部分）
  SERVICE_NAME=$(basename ${SERVICE})
  echo "开始处理 hello-${SERVICE_NAME} 服务"
  
  # 定义服务目录 - 使用脚本目录
  SERVICE_DIR="${SCRIPT_DIR}/${SERVICE}"
  echo "检查目录: ${SERVICE_DIR}"
  
  # 检查目录是否存在
  if [ ! -d "${SERVICE_DIR}" ]; then
    echo "目录 ${SERVICE_DIR} 不存在，跳过"
    continue
  fi
  
  # 检查Dockerfile是否存在
  if [ ! -f "${SERVICE_DIR}/Dockerfile" ]; then
    echo "Dockerfile不存在于 ${SERVICE_DIR}，跳过"
    continue
  fi
  
  # 构建镜像
  echo "构建镜像 hello-${SERVICE_NAME}:${VERSION}..."
  cd ${SERVICE_DIR}
  
  # 直接使用Dockerfile构建，并指定AMD64平台
  docker build --platform=linux/amd64 -t hello-${SERVICE_NAME}:${VERSION} .
  
  if [ $? -ne 0 ]; then
    echo "构建 hello-${SERVICE_NAME} 镜像失败"
    continue
  fi
  
  # 标记镜像
  FULL_IMAGE_NAME="${REGISTRY}/${NAMESPACE}/hello-${SERVICE_NAME}:${VERSION}"
  echo "标记镜像为 ${FULL_IMAGE_NAME}..."
  docker tag hello-${SERVICE_NAME}:${VERSION} ${FULL_IMAGE_NAME}
  
  # 推送镜像
  echo "推送镜像到阿里云..."
  docker push ${FULL_IMAGE_NAME}
  
  if [ $? -ne 0 ]; then
    echo "推送 ${FULL_IMAGE_NAME} 失败"
  else
    echo "推送 ${FULL_IMAGE_NAME} 成功"
  fi
  
  echo "处理 hello-${SERVICE_NAME} 完成"
  echo "==========================================="
  
  # 返回到原始目录
  cd ${CURRENT_DIR}
done

echo "所有镜像构建和推送处理完成"
exit 0 